import { CommonModule } from '@angular/common'
import { NgModule } from '@angular/core'
import { FormsModule } from '@angular/forms'
import { NgbModule } from '@ng-bootstrap/ng-bootstrap'

import TabbyCorePlugin from 'tabby-core'
import { SettingsTabProvider } from 'tabby-settings'

import { PluginsSettingsTabComponent } from './components/pluginsSettingsTab.component'
import { PluginManagerService } from './services/pluginManager.service'
import { PluginsSettingsTabProvider } from './settings'

@NgModule({
    // 导入必要的模块
    imports: [
        CommonModule, // 提供常规指令（如 ngIf 和 ngFor）
        FormsModule,  // 提供表单功能
        NgbModule,    // 提供 ng-bootstrap 组件
        TabbyCorePlugin, // Tabby 核心插件
    ],
    // 配置服务提供者
    providers: [
        // 设置项标签提供者
        { provide: SettingsTabProvider, useClass: PluginsSettingsTabProvider, multi: true },
    ],
    // 声明组件
    declarations: [
        PluginsSettingsTabComponent, // 插件设置标签组件
    ],
})
// 定义并导出插件管理模块，eslint 禁用多余的类检查
export default class PluginManagerModule { } // eslint-disable-line @typescript-eslint/no-extraneous-class

// 导出插件管理服务
export { PluginManagerService }
